package projet.bd;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
/*
 * Cette activity a pour but de stocker et de lire le fichier qui contient tous 
 * les pseudos-événements qui sont détectés par l'application
 */
public class SmsStockageActivity extends Activity {

	// nom du fichier qui contiendra tous les pseudos événements
	private String nom_fichier = "BD_sauvegarde.txt";
	

	@Override
	public void onCreate(Bundle savedInstanceState) {

		//L'affichage de cette activity sera géré par le layout smsstockage
		super.onCreate(savedInstanceState);
		setContentView(R.layout.smsstockage);
		
		// Récupération des informations liées à l'INTENT de SmsListener
		Bundle extras = getIntent().getExtras();

		if (extras == null)
			return;
		else {
			// Si l'intent à le champ type qui vaut "insertion" alors on a detecté un
			// sms , il va falloir le stocker en mémoire
			if(extras.getString("type") == "insertion")
			{
				String enregistrement = extras.getString("val");
				ecrireFichier(this.getNomFichier(), enregistrement);
			}
		}

		//Affichage du fichier qui contient tous les événements
		String str = lireFichier(this.getNomFichier());		
		TextView tv = (TextView)findViewById(R.id.textView1);
		if (tv != null)	
			tv.setText(str);
		
	}

	//Méthode d'activity , elle est appelé à chaque fois qu'on fait un startActivity()
	protected void onResume()
	{
		//L'affichage de cette activity sera géré par le layout smsstockage
		super.onResume();
		setContentView(R.layout.smsstockage);
		
		// Récupération des informations liées à l'INTENT de SmsListener
		Bundle extras = getIntent().getExtras();

		if (extras == null)
			return;
		else {
			// Si l'intent à le champ type qui vaut "insertion" alors on a detecté un
			// sms , il va falloir le stocker en mémoire
			
				String enregistrement = extras.getString("val");
				ecrireFichier(this.getNomFichier(), enregistrement);
			
		}

		//Affichage du fichier qui contient tous les événements
		String str = lireFichier(this.getNomFichier());		
		TextView tv = (TextView)findViewById(R.id.textView1);
		if (tv != null)	
			tv.setText(str);
	}

	//Avoir le nom du fichier
	public String getNomFichier() {
		return nom_fichier;
	}	
	

	//Methode qui lit en intégralité le fichier des événements
	private String lireFichier(String nomFichier) {

		File dir = getDir("ToutMesFichiers", MODE_APPEND);

		File newfile = new File(dir.getAbsolutePath() + File.separator
				+ nomFichier);
		
		String monText = "";

		BufferedReader input = null;

		try {
			input = new BufferedReader(new InputStreamReader(
					new FileInputStream(newfile)
			));

			String line;
			StringBuffer buffer = new StringBuffer();
			int i=0;
			while ((line = input.readLine()) != null) {
				if(line == "\n")
				{
					buffer.append("Evenement ");
					buffer.append(i);
				}
				
				buffer.append(line);
				buffer.append("\n");
				i++;
				
			}
			if(i==0) Toast.makeText(this, "Il n'y a aucun évènement de stocker", Toast.LENGTH_SHORT).show();
			monText = buffer.toString();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {

			if (input != null) {
				try {
					input.close();

				} catch (IOException e) {

					e.printStackTrace();
				}
			}
		}
		return monText;
	}

	//Méthode qui écrit un événement dans notre fichier
	private void ecrireFichier(String nomFichier, String monText) {

		BufferedWriter writer = null;

		try {
			File dir = getDir("ToutMesFichiers", MODE_APPEND);
			File newfile = new File(dir.getAbsolutePath() + File.separator
					+ nomFichier);
			
			writer = new BufferedWriter(new OutputStreamWriter(
					new FileOutputStream(newfile,true)));
			
			writer.write(monText);		
			writer.write("\r\n");
			Toast.makeText(this, "Un nouvel événement a été enregistré", Toast.LENGTH_SHORT).show();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (writer != null) {
				try {
					writer.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

}
